Central Weather Bureau Buoy Data
海溫統計-臺灣海域各地海溫觀測月統計
cwb <- fromJSON(file="../Data/C-B0050-001.json")
# Meta data
meta <- lapply(cwb$cwbdata$Resources$Resource$Data$SeaSurfaceObs$Location, FUN=function(x)x[[1]])
# Monthly temperature
dat <- lapply(cwb$cwbdata$Resources$Resource$Data$SeaSurfaceObs$Location, FUN=function(x)x[[2]]$Monthly)
MonthlyTemperatureFun <- function(i){
cbind(StationNameEN = lapply(meta, FUN=function(x)x$StationNameEN)[i] %>% as.character %>% as.factor,
cbind(
StationLatitude=lapply(meta, FUN=function(x)x$StationLatitude)[i] %>% as.numeric,
StationLongitude=lapply(meta, FUN=function(x)x$StationLongitude)[i] %>% as.numeric,
DataMonth=lapply(dat[[i]], FUN=function(x)x$DataMonth) %>% unlist %>% as.numeric,
Maximum=lapply(dat[[i]], FUN=function(x)x$SeaTemperature$Maximum) %>% unlist %>% as.numeric,
MaximumYear=lapply(dat[[i]], FUN=function(x)x$SeaTemperature$MaximumYear) %>% unlist %>% as.numeric,
Mean=lapply(dat[[i]], FUN=function(x)x$SeaTemperature$Mean) %>% unlist %>% as.numeric,
Minimum=lapply(dat[[i]], FUN=function(x)x$SeaTemperature$Minimum) %>% unlist %>% as.numeric,
MinimumYear=lapply(dat[[i]], FUN=function(x)x$SeaTemperature$MinimumYear) %>% unlist %>% as.numeric,
MinimumAnomaly=lapply(dat[[i]], FUN=function(x)x$SeaTemperature$MinimumAnomaly) %>% unlist %>% as.numeric,
MaximumAnomaly=lapply(dat[[i]], FUN=function(x)x$SeaTemperature$MaximumAnomaly) %>% unlist %>% as.numeric,
MeanAnomaly=lapply(dat[[i]], FUN=function(x)x$SeaTemperature$MeanAnomaly) %>% unlist %>% as.numeric
) %>% as.data.frame
)
}
hb <- MonthlyTemperatureFun(18) %>% subset(MinimumYear == MaximumYear)
hb$grp <- "hb"
cg <- MonthlyTemperatureFun(8) %>% subset(MinimumYear == MaximumYear)
cg$grp <- "cg"
tb <- MonthlyTemperatureFun(34) %>% subset(MinimumYear == MaximumYear)
tb$grp <- "tb3"
tb$grp[1:43] <- "tb1"
tb$grp[44:68] <- "tb2"
out <- rbind(hb, cg, tb)
out$Time <- as.POSIXct(paste(out$MaximumYear, substr(as.character(out$DataMonth+1000), 3, 4), "15", sep="-"))
p1 <- ggplot(data=out,aes(x=Time, y=Mean, ymin=Minimum, ymax=Maximum, group=grp, colour=StationNameEN, fill=StationNameEN))+
geom_path()+
geom_point()+
#geom_ribbon(alpha=0.1, colour="transparent")+
geom_vline(xintercept = as.POSIXct(c("2012-04-15", "2012-08-15")), colour="red", linetype=2)+
scale_x_continuous(breaks=as.POSIXct(paste(2003:2023, "01", "01", sep="-")), labels=2003:2023)+
scale_color_viridis_d()+
scale_fill_viridis_d()+
#facet_wrap(~StationNameEN, ncol=1)+
labs(x="Month", y=expression(Monthly~mean~temperature~(degree~C)), colour="Buoy", fill="Buoy", title="a")+
xlim(as.POSIXct(paste(2011, "06", "01", sep="-")), as.POSIXct(paste(2013, "07", "31", sep="-")))+
theme_bw() %+replace% large %+replace% theme(axis.text.x = element_blank(), axis.title.x = element_blank())
p2 <- ggplot(data=out,aes(x=Time, y=Mean, ymin=Minimum, ymax=Maximum, group=grp, colour=StationNameEN, fill=StationNameEN))+
geom_path()+
geom_point()+
geom_ribbon(alpha=0.1, colour="transparent")+
geom_vline(xintercept = as.POSIXct(c("2012-04-15", "2012-08-15")), colour="red", linetype=2)+
scale_x_continuous(breaks=as.POSIXct(paste(2003:2023, "01", "01", sep="-")), labels=2003:2023)+
scale_color_viridis_d()+
scale_fill_viridis_d()+
facet_wrap(~StationNameEN, ncol=1)+
labs(x="Month", y=expression(Monthly~mean~temperature~(degree~C)), colour="Buoy", fill="Buoy", title="b")+
xlim(as.POSIXct(paste(2011, "06", "01", sep="-")), as.POSIXct(paste(2013, "07", "31", sep="-")))+
theme_bw() %+replace% large %+replace% no_strip
p1/p2+plot_layout(nrow = 2, heights = c(1, 3))
